package test;

import java.sql.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Scanner;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

import app.Facade;


import modelo.Alquiler;
import modelo.AlquilerPK;
import modelo.Cliente;
import modelo.Genero;
import modelo.Pelicula;
import modelo.Promocion;

import impleDao.AlquilerImple;
import impleDao.ClienteImple;
import impleDao.GeneroImple;
import impleDao.PeliculaImple;
import impleDao.PromocionImple;
import dao.PeliculaDAO;

public class main
{

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		/*
		PeliculaImple pDao= new PeliculaImple();
		
		List<Pelicula> lst=pDao.findByGenero(1);
		for(Pelicula p:lst){
			System.out.println(p);
		}
		
		System.out.println("------------------");
		
		GeneroImple gDao=new GeneroImple();
		List<Genero> lst3=gDao.findAll();
		for(Genero g:lst3){
			System.out.println(g);
		}
		
		System.out.println("------------------");
		
		ClienteImple cDao=new ClienteImple();
		Cliente c=cDao.find(1);
		System.out.println(c);
		
		System.out.println("------------------");
		
		PromocionImple prDao=new PromocionImple();
		List<Promocion> lst2=prDao.findAll();
		for(Promocion p:lst2){
			System.out.println(p);
		}
		
		Pelicula p=(Pelicula)HibernateUtil.getSession().get(Pelicula.class,1);
		
		AlquilerPK apk=new AlquilerPK();
		apk.setIdPelicula(p.getIdPelicula());
		apk.setIdCliente(c.getIdCliente());
		GregorianCalendar gc=new GregorianCalendar();
		apk.setFecha(new Date(gc.getTimeInMillis()));
		Alquiler alquiler=new Alquiler();
		alquiler.setCliente(c);
		alquiler.setNroCupon(2);
		alquiler.setDias(3);
		alquiler.setIdAlquiler(apk);
		alquiler.setPromocion(lst2.get(0).getPromocion());
		alquiler.setPelicula(p);
		
		//AlquilerImple aDao=new AlquilerImple();
		*/
		XmlBeanFactory factory=new XmlBeanFactory(new ClassPathResource("beans.xml"));
		Facade facade=(Facade)factory.getBean("Facade");
		
		
		
		
		
		Scanner sc=new Scanner(System.in);
		int op;
		
		System.out.println("Lista de generos");
		List<Genero> lstG=facade.obtenerGeneros();
		
		for(Genero g:lstG){
			System.out.println(g);
		}
		System.out.print("Ingrese un genero: ");
		op=sc.nextInt();
		while(op>lstG.size() || op<1){
			System.out.print("Numero de genero erroneo\nIngrese otro: ");
			op=sc.nextInt();
			
		}
		
		
		System.out.println("Peliculas del genero "+lstG.get(op-1).getDescripcion());
		List<Pelicula> lstP=facade.obtenerPeliculasXGenero(op);
		for(Pelicula p:lstP){
			System.out.println(p);
		}
		int[] arr=new int[lstP.size()];
		for(int i=0;i<lstP.size();i++){
			//System.out.print(i+" ");
			arr[i]=lstP.get(i).getIdPelicula();}
		
		
		//System.out.println("cantidad de peliculas: "+lstP.size());
		
		System.out.print("Ingrese la ID de una pelicula: ");
		int op2=sc.nextInt();
		
		boolean rpta=false;
		
		do{
			int j=0;
			while(!rpta && j<lstP.size()){
				if(arr[j]==op2)
					rpta=true;
				//System.out.print(j+" ");
				j++;
				
			}
			if(!rpta){
				System.out.println("ID de pelicula erroneo\nIngrese otro: ");
				op2=sc.nextInt();
			}
		}while(!rpta);
		
		
		
		
		int dias=0;
		System.out.print("Ingrese la cantidad de dias que desea alquilar: ");
		dias=sc.nextInt();
		
		System.out.print("Ingrese su Usuario :");
		String user=sc.next();
		System.out.print("Ingrese su ID :");
		int idUser=sc.nextInt();
		
		
		Cliente c=facade.identificarCliente(idUser,user);
		while(c==null){
			System.out.println("Datos erroneos\nIngrese datos nuevamente");
			System.out.println("Ingrese su Usuario ");
			user=sc.next();
			System.out.println("Ingrese su ID ");
			idUser=sc.nextInt();
			c=facade.identificarCliente(idUser,user);
		}
		
		System.out.println("Lista de promociones");
		List<Promocion> lstPr=facade.obtenerPromociones();
		for(Promocion pr:lstPr){
			System.out.println(pr);
		}
		System.out.print("Ingrese el numero del cupon que posea: ");
		int pro=sc.nextInt();
		
		while(op>lstPr.size() || pro<1){
			System.out.print("Numero de cupon erroneo\nIngrese otro: ");
			pro=sc.nextInt();
			
		}
		
		AlquilerPK apk=new AlquilerPK();
		GregorianCalendar gc=new GregorianCalendar();
		apk.setFecha(new Date(gc.getTimeInMillis()));
		apk.setIdCliente(idUser);
		apk.setIdPelicula(op2);
		
		Alquiler alquiler=new Alquiler();
		alquiler.setIdAlquiler(apk);
		
		
		alquiler.setDias(dias);
		alquiler.setNroCupon(pro);
		alquiler.setPromocion(lstPr.get(pro-1));
		
	
		
		facade.agregarAlquiler(alquiler);
		
		System.out.println("Listo");
		
		

	}

}
